1. Field of the Invention
The present invention relates to an image forming apparatus which receives print data and prints, a control method therefor, and a program.
2. Description of the Related Art
An application on a host computer prints an image or text from a printing apparatus by generally using an arrangement as shown in FIG. 1.
More specifically, an application 101 on a host computer 3000 passes graphics data to a graphics engine 103. The graphics engine 103 processes the graphics data and passes it to a printer driver 104. The printer driver 104 generates print data (e.g., PDL: Page Description Language) to a printer 1500. The print data is stored in a spooler 105 and then sent to the printer 1500.
In particular, the graphics engine 103 converts the resolution of graphics data created by the application 101, and processes graphics data by a simulation process or the like in accordance with the performance of the printer driver 104. The graphics engine 103 allows the application 101 and printer driver 104 to operate independently of each other. The graphics engine 103 is generally provided as part of an OS (Operating System) 102.
The number of graphics engines 103 is not always one, but may be two or more.
For example, Microsoft held a hardware engineering conference WinHEC 2005 in Seattle, U.S.A., in 2005. At this conference, Microsoft announced that a new Microsoft OS (Windows® Vista) supports two graphics engines (GDI 202 and WPF 212) as shown in FIG. 2 (Advances in Windows® Printing: TWPR05001_WinHEC05.ppt). The WPF stands for “Windows® Presentation Foundation.”
A conventional Microsoft printing system utilizes a graphics engine “GDI” from an application using an API called a Win32API, and creates print data from graphics data by a printer driver called from the GDI. This print process sequence is called a GDI print path.
The API stands for Application Programming Interface. The GDI stands for Graphic Device Interface. An application using the Win32API will be referred to as a Win32 application 201. A printer driver called from the GDI will be referred to as a GDI printer driver 203.
According to Windows® Vista, a new print process sequence called an XPS print path is added to the conventional GDI print path. The XPS print path is a print process sequence to convert XPS graphics data into print data by the printer driver using a graphics engine “WPF” from an application using a WinFxAPI.
The XPS stands for XML Paper Specification. An application using the WinFxAPI will be referred to as a WinFx application 211. A printer driver which processes XPS graphics data will be referred to as an XPS printer driver 213.
In Windows® Vista, applications are classified into two types: the Win32 application 201 and WinFx application 211. The OS 102 supports the two graphics engines, i.e., the GDI 202 and WPF 212.
The Win32 application 201 passes graphics data to the GDI 202, whereas the WinFx application 211 passes graphics data to the WPF 212. Printer drivers are classified into two types: the GDI printer driver 203 and XPS printer driver 213. The GDI printer driver 203 receives graphics data from the GDI 202, and changes it into print data for the printer 1500. The XPS printer driver 213 receives graphics data from the WPF 212 and changes it into print data for the printer 1500. Print data created by each printer driver is transmitted to the printer 1500 via the spooler 105.
These graphics engines, i.e., GDI 202 and WPF 212 can cooperate with each other. With this cooperation, the Win32 application 201 can pass graphics data to the XPS printer driver 213, and the WinFx application 211 can pass graphics data to the GDI printer driver 203.
The cooperative mechanism of the two graphics engines in Windows® Vista will be explained with reference to FIG. 3.
Print process sequence (1) represents a conventional GDI print path. Rendering data passed from the Win32 application 201 is stored as an EMF (Enhanced Metafile) spool file 301 in the GDI 202. Then, the GDI printer driver 203 converts the EMF spool file 301 into print data.
Print process sequence (4) represents an XPS print path added in Windows® Vista. Rendering data passed from the WinFx application 211 is stored as an XPS spool file 311 in the WPF 212. Then, the XPS printer driver 213 converts the XPS spool file 311 into print data.
Print process sequence (3) represents a print process sequence when the GDI printer driver 203 prints graphics data from the WinFx application 211. Rendering data passed from the WinFx application 211 is converted into EMF graphics data by an XPS→GDI conversion module 312 via the WPF 212, and stored as the EMF spool file 301. Then, the GDI printer driver 203 converts the EMF spool file 301 into print data.
Print process sequence (2) represents a process sequence when the XPS printer driver 213 prints graphics data from the Win32 application 201. Rendering data passed from the Win32 application 201 is converted into XPS graphics data by a GDI→XPS conversion module 302 via the GDI 202, and stored as the XPS spool file 311. Then, the XPS printer driver 213 converts the XPS spool file 311 into print data.
In Windows® Vista, the four print process sequences are prepared. Either the GDI printer driver 203 or XPS printer driver 213 is prepared as a printer driver for a printer and can cope with print processes from both the Win32 application 201 and WinFx application 211.
When giving attention to the XPS format itself, the XPS format can have a security function, which is a feature of the XPS format. For example, an electronic signature can be added to XPS document data to detect tampering of the document data. The use of the electronic signature adding function proposes security solutions in cooperation with a printer.
For example, a printing system in which a printer has the electronic signature verification function can be built. In this printing system, the printer verifies an electronic signature added to a received XPS document, and prints only when determining that no tampering of the document has occurred.
For example, patent reference 1 proposes a technique of analyzing received print data by the printer to determine whether to actually print it. According to patent reference 1, the determination method adopts a criterion for judging whether a job attribute designated by print data is processible.
However, the XPS and EMF formats are different. The print quality, print function, and print speed may degrade in a print process sequence in which graphics data conversion may occur, like print process sequences (2) and (3) in FIG. 3.
In terms of the print quality, for example, graphics data containing a logical operation such as ROP (Raster OPeration), which is supported by the EMF format, is not supported by the XPS format in print process sequence (2). Depending on specifications determined by Microsoft, logical operation information may be omitted when the GDI→XPS conversion module 302 converts logical operation-containing graphics data. When the XPS printer driver 213 receives graphics data having no logical operation information, it may not create an output result intended by the Win32 application 201.
To the contrary, advanced graphics graphics data supported by the XPS format is not supported by the EMF format in print process sequence (3). The XPS→GDI conversion module 312 performs local bitmap “Flattering” when converting XPS graphics data into GDI one. In this case, graphics data is converted into bitmap data, and the GDI printer driver 203 cannot determine the original object attribute, failing to create any optimum output result.
In print process sequence (2) or (3), therefore, a print result output from the printer may degrade in quality from what the user intends.
In terms of security, for example, electronic signature information supported by the XPS format is not supported by the EMF format in print process sequence (3). After an XPS document passes through print process sequence (3), electronic signature information added to the document is lost, and the printer must print by a conventional system. In this case, printing by a malicious user by intentionally avoiding the security restriction may not be prevented.